# 天干列表
heavenly_stems = ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸']
# 地支列表
earthly_branches = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥']


def year_to_ganshi(year):
    """
    将公历年份转换为干支纪年
    :param year: 公历年份
    :return: 干支纪年字符串
    """
    # 计算天干和地支的索引
    stem_index = (year - 3) % 10 - 1
    branch_index = (year - 3) % 12 - 1
    if stem_index < 0:
        stem_index += 10
    if branch_index < 0:
        branch_index += 12
    return heavenly_stems[stem_index] + earthly_branches[branch_index]


def ganshi_to_year(ganshi):
    """
    简单查找干支纪年对应的公历年份（这里仅查找 1900 - 2100 年范围）
    :param ganshi: 干支纪年字符串
    :return: 对应的公历年份列表
    """
    years = []
    for year in range(1900, 2101):
        if year_to_ganshi(year) == ganshi:
            years.append(year)
    return years


def play_game():
    print("欢迎来到干支纪年游戏！")
    while True:
        print("\n请选择游戏模式：")
        print("1. 输入公历年份，查询干支纪年")
        print("2. 根据干支纪年，猜测公历年份")
        print("3. 退出游戏")
        choice = input("请输入选项编号 (1/2/3): ")

        if choice == '1':
            try:
                year = int(input("请输入一个公历年份: "))
                ganshi = year_to_ganshi(year)
                print(f"{year} 年对应的干支纪年是: {ganshi}")
            except ValueError:
                print("输入无效，请输入一个有效的整数年份。")
        elif choice == '2':
            # 随机选择一个干支纪年
            random_stem = random.choice(heavenly_stems)
            random_branch = random.choice(earthly_branches)
            random_ganshi = random_stem + random_branch
            print(f"当前的干支纪年是: {random_ganshi}")
            try:
                guess = int(input("请猜测对应的公历年份（范围 1900 - 2100）: "))
                correct_years = ganshi_to_year(random_ganshi)
                if guess in correct_years:
                    print("恭喜你，猜对了！")
                else:
                    print(f"猜错了，正确答案是 {', '.join(map(str, correct_years))}。")
            except ValueError:
                print("输入无效，请输入一个有效的整数年份。")
        elif choice == '3':
            print("游戏结束，感谢参与！")
            break
        else:
            print("输入的选项无效，请输入 1、2 或 3。")


if __name__ == "__main__":
    import random
    play_game()